﻿#region Usings

using System;
using System.Xml.XPath;
using Yandex.Market.Api.YmlSerialization;

#endregion

namespace Yandex.Market.Api.Model
{
    /// <summary>
    ///   Описывает элемент 'categoryId'
    /// </summary>
    [YmlSerializeAs("categoryId")]
    [Serializable]
    public class CategoryID
    {
        /// <summary>
        /// </summary>
        public CategoryID()
        {
            Type = YmlCategoryIdType.Own;
        }

        /// <summary>
        ///   Идентификатор категории товара (целое число не более 18 знаков).<br /> 
        ///   Товарное предложение может принадлежать только одной категории. Обязательный элемент
        /// </summary>
        [YmlValueForClass]
        public uint Value { get; set; }

        /// <summary>
        ///   Тип категории
        /// </summary>
        [YmlSerializeAs("type")]
        [YmlAttributeForClass]
        public YmlCategoryIdType Type { get; set; }

        internal static CategoryID CreateCategoryIDFromXml(XPathNavigator nav)
        {
            CategoryID categoryID = new CategoryID();
            uint value;
            if(uint.TryParse(nav.Value.Trim(), out value))
                categoryID.Value = value;

            YmlCategoryIdType categoryIdType;
            string type = nav.GetAttribute("type", "");
            if(!string.IsNullOrEmpty(type) && Enum.TryParse(type.Trim(), out categoryIdType))
                categoryID.Type = categoryIdType;

            return categoryID;
        }
    }
}